package cn.tedu.innerclass;
/*本类用于内部类的入门案例*/
public class TestInner1 {
    public static void main(String[] args) {
        //创建内部类对象,使用内部类的资源
        /*外部类名.内部类名 对象名 = 外部类对象.内部类对象*/
        Outer.Inner oi = new Outer().new Inner();
        oi.delete();
        System.out.println(oi.sum);

        //创建外部类的匿名对象
        new Outer().find();
    }
}
//创建外部类
class Outer {
    //创建外部类的成员变量
    String name;
    private int age;
    //创建外部类的成员方法
    public void find(){
        System.out.println("Outer...find()");
        //测试外部类能否使用内部类的资源
//        System.out.println(sum);
//        delete();
        /*外部类如果想要使用内部类的资源,必须先创建内部类的对象
        * 然后通过内部类对象来调用内部类的资源*/
        Inner in = new Inner();
        System.out.println(in.sum);
        in.delete();
    }

    //定义内部类---外部类的一个特殊成员
    /*根据内部类所在位置的不同,分为:成员内部类(类里方法外)与局部内部类(类里方法里)*/
    class Inner{
//        定义内部类的成员变量
        int sum =10;
//        定义内部类的成员方法
        public void delete(){
            System.out.println("Inner...delete");
            //测试内部类是否可以使用外部类的资源
            /*结论:内部类可以直接使用外部类的资源,包括私有资源*/
            System.out.println(name);
            System.out.println(age);
            //find();//不能在外部类与内部类互相调用
        }
    }
}
